-
Notifications
You must be signed in to change notification settings - Fork 578
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unblock wallet_switchEthereumChain
#2634
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2634 +/- ##
=======================================
Coverage 94.90% 94.91%
=======================================
Files 504 505 +1
Lines 11119 11134 +15
Branches 1708 1711 +3
=======================================
+ Hits 10553 10568 +15
Misses 566 566 ☔ View full report in Codecov by Sentry. |
2a66d50
to
fd11f16
Compare
@metamaskbot update-pr |
Updated dependencies detected. Learn more about Socket for GitHub ↗︎
|
👍 Dependency issues cleared. Learn more about Socket for GitHub ↗︎ This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored. |
@SocketSecurity ignore npm/@metamask/[email protected] This is ours. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the future we could consider full support for wallet_switchEthereumChain
, and actually updating the provider configuration etc., but for now this simply makes the wallet_switchEthereumChain
method always return null
.
f2aa83e
to
1dcbeda
Compare
@SocketSecurity ignore npm/[email protected] Only used for development / testing, and pending update in another PR. @SocketSecurity ignore npm/@metamask/[email protected] This is ours. |
* @param newPermissions - The new permissions to be granted. | ||
* @returns The permissions to grant to the Snap. | ||
*/ | ||
#getPermissionsToGrant(snapId: SnapId, newPermissions: RequestedPermissions) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we still need this? I thought we were making changes elsewhere for the auto granting?
In addition, this endowment has been removed in favor of the CAIP-25 endowment AFAIK
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We grant permission when calling wallet_switchEthereumChain
, but still need to grant permission for some network when first installing or updating the Snap.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense! Can we document this?
@@ -207,6 +223,9 @@ async function signTypedData(message: string, from: string) { | |||
* @see https://docs.metamask.io/snaps/reference/rpc-api/#wallet_invokesnap | |||
*/ | |||
export const onRpcRequest: OnRpcRequestHandler = async ({ request }) => { | |||
const { chainId = '0x1' } = (request.params as BaseParams) ?? {}; | |||
await switchChain(chainId); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
probably not a problem, but i think always using mainnet makes it possible in the extension e2e tests that use this snap to try to hit the mainnet infura endpoint, but I think that's probably only the case if something triggers getGasPrice
and i'm not certain there is an extension e2e test that does that. Just pointing this out in case I am wrong
packages/snaps-simulation/src/middleware/internal-methods/switch-ethereum-chain.ts
Outdated
Show resolved
Hide resolved
sorry, I realize this PR is still marked as draft, so sorry for the early nit comments |
736f8f1
to
afa3bc5
Compare
607162c
to
5e27ac2
Compare
@@ -5330,6 +5330,216 @@ describe('SnapController', () => { | |||
snapController.destroy(); | |||
}); | |||
|
|||
it('grants the `endowment:caip25` permission to a Snap with `endowment:ethereum-provider` if the `useCaip25Permission` feature flag is enabled', async () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we add some tests for updating a Snap? That it also grants the permission and maybe revokes the permission as well? I can't recall what happens to eth_accounts
normally actually
3612252
to
ff78991
Compare
ff78991
to
a757d23
Compare
2fb2569
to
99d42da
Compare
This removes
wallet_switchEthereumChain
from theBLOCKED_RPC_METHODS
list.Closes MetaMask/MetaMask-planning#2938.
Closes #2654.
Blocked by: